package liming.tool.json;

import liming.tool.json.annotation.JsonMark;
import liming.tool.json.annotation.JsonType;

interface JsonGetName {
    default String getJsonRootName(){
        Class<?> clazz = getDefaultClass();
        String name = clazz.getSimpleName();
        name = Tool.getName(clazz.getAnnotation(JsonMark.class),name);
        while (name.isEmpty())
            name = (clazz=clazz.getSuperclass()).getSimpleName();
        return name;
    }
    default Class<?> getDefaultClass(){
        Class<? extends JsonGetName> classType = getClass();
        if(classType.getAnnotation(JsonMark.class)==null||classType.getAnnotation(JsonType.class)==null)
            return classType;
        return classType.getAnnotation(JsonType.class).value();
    }
}
